home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 44 / CDPowerplay44Disc2.iso / unreal / cool UT files / grapple.umod < prev    next >
Encoding:
INI File  |  1999-11-01  |  19.2 KB  |  445 lines

  1. [Setup]
  2. Product=Grapple
  3. Version=100
  4. Archive=Grapple.umod
  5. SrcPath=.
  6. MasterPath=..
  7. Group=SetupGroup
  8. Group=GrappleGroup
  9. Group=umodIncludeFilesGroup
  10.  
  11. [SetupGroup]
  12. Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=383,Flags=3)
  13. Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=225,Flags=3)
  14.  
  15. [GrappleGroup]
  16. File=(Src=System\Grapple.u,Size=16373)
  17. File=(Src=System\Grapple.int,Size=160)
  18.  
  19. [umodIncludeFilesGroup]
  20. File=(Src=System\TeamCTF.txt,Size=1025)
  21. File=(Src=System\Grapple.txt,Size=1085)
  22.  
  23. [Setup]
  24. LocalProduct=Grapple
  25. ReadMe=System\Grapple.txt
  26. SetupWindowTitle=Grapple Mutator
  27. AutoplayWindowTitle=Grapple Options
  28. ProductURL=none
  29. VersionURL=none
  30. Developer=^Soul^
  31. DeveloperURL=www.unrealnation.net/unloaded
  32. ┴â*₧Dª@Q;d└7ÇJ¡∙ä╙╗b≡RH┴QªNoneGrappleEngine
  33. GrappleArenaSystemCoreFire    CheckHitBeginIdleAltFireFinishBotpack UpdateCable
  34. PlayIdleAnimocmGrappleLauncherspeedVector PlayFiring
  35. Destroyed NormalFire    EndStateAnimEnd
  36. AltFiring DownWeaponTouchTickbUnlitTexture
  37. CableSize PlayerPawn Defaultammo    GrappleMMesh    ItemName
  38. WeaponString AmmoStringProjectileClass FireOffsetWeaponAltProjectileClassSpiked TakeDamageThirdPersonMeshPickupViewMesh StatusIconbRotatingPickupCheckReplacementDefaultWeapon WeaponNameMassbMeshEnviroMapPutDownRaiseUpbBlockPlayers
  39. bBlockActors GrappleBaseBringUpSetHand
  40. ShakeView    LifeSpan ReplaceWithAdjustHitLocationPhysicsThrow
  41. TranslocatorGiveToPlayerViewOffsetProjectileFire    DropFrom StopFiringCheckVisibility AddVelocity PlayRecoil    AmmoNamePlayerViewMeshRoleFRotator ReturnValue    Function bProjTargetObjectDynamicLoadObjectLodMeshMutator TextBuffer
  42. shaketimebHiddenPackage    GameInfo
  43. shakevertStateClassLevelhand HitLocationPlayer
  44. DeltaTimeOtherX    VelocityGame bWarnTargetOwner    HitActorZNetModebCoopWeaponModeYbSuperRelevantValuebCenter
  45. OldWeapon    Rotation
  46. ViewRotation ScriptTextStruct    Location
  47. LevelInfoStructProperty DrawOffset
  48. PawnOwnerStartLocationSoundDampening
  49. bPointingbChangeWeapon bRapidFire FiringSpeed StrProperty    AirSpeedCalcDrawOffset
  50. FireSound
  51. EyeHeight Instigator ProjectileClassPropertyIconsbRightUMenuBg41
  52. NamePropertyTournamentWeapon
  53. Inventory    shakemagActorArena    Transloc
  54. Trans3loc    UseTransPreviousWeapon
  55. MiniTrace AimRotationObjectPropertyPawnFloatPropertyDirProjectileSpeed
  56. HitNormal    NewCable    bHitWall
  57. BoolProperty    TestVect
  58. ByteProperty ParentCablePlayOwnedSoundá=Fz Ü:╩:$"           ╒Ç∙Báü$⌠»òl║)Σä┐≤d∞1└7x╒Ç∙Bä┐≤d∞1└7x╒Ç∙B╒Ç∙Bâ╜É«lâ╜É«lâ╜É«lä┐≤d∞ä┐≤d∞ä┐≤d∞1└7x╒Ç∙Bä┐≤d∞1└7xä┐≤d∞ä┐≤d∞ä┐≤d∞â╜É«lä┐≤d∞1└7x╒Ç∙Bä┐≤d∞1└7x╒Ç∙B╒Ç∙B╒Ç∙Bå$┤B$·D?<$pB╤!Σ╙3╙7╙6╙î62        Ç          2
  59. 1└7xîα~╧Φä┐≤d∞╒Ç∙BÆ]Pd+ä┐≤d∞â╜É«lä┐≤d∞╒Ç∙B╒Ç∙B å&:µBpA@%(.S"]Grapple LauncherC:á@Ç└α└K»,¼+¼-π2$ A
  60. âêÇOê┌ê ê
  61. êêÇêÇâ)I8        "          tûX╒Ç∙BÜ_ ä┐≤d∞Æ]Pd+ä┐≤d∞ö1└7xä┐≤d∞ä┐≤d∞ä┐≤d∞à- ╣∙ä┐≤d∞ä┐≤d∞à- ╣∙ä┐≤d∞à- ╣∙ä┐≤d∞à- ╣∙ä┐≤d∞à- ╣∙ä┐≤d∞å$àCÇêÇâäÇÇà9 Çê4Ç ê╓!D≥└q!:w.Ææ*.Ææ╛┐┬-▒'zéü-┴
  62. ▒│?%.äæ I│ªr*.D╣└-▌╛æ-─G Ç╬(55╬(r* ¥ ¡3E&Θ+w*a*¡ ╔>h;├╟$½Ç@.äæ╢a!@Ç?═╠╠= Ç▀$]{ Çα#7
  63. aú ╫"
  64. S▒    q! ƒ&Mh╧a             ¥ 9/t*¥ F//=============================================================================
  65. // GrappleBase.
  66. //=============================================================================
  67. class GrappleBase expands Grapple;
  68.  
  69. var rotator AimRotation;
  70.  
  71. simulated function Tick(float DeltaTime)
  72. {
  73.   local vector X,Y,Z, 
  74.                DrawOffset,
  75.                HitNormal,
  76.                HitLocation;
  77.   local Actor  HitActor;
  78.  
  79.   if (Instigator != none)
  80.   {
  81.     if ((Level.NetMode == NM_Client) && (!Instigator.IsA('PlayerPawn') || (PlayerPawn(Instigator).Player == none)))
  82.     {
  83.       SetRotation(AimRotation); 
  84.       Instigator.ViewRotation = AimRotation;
  85.       DrawOffset = ((0.01 * Class'ocmGrappleLauncher'.Default.PlayerViewOffset) >> Rotation);
  86.       DrawOffset += (Instigator.EyeHeight * vect(0,0,1));
  87.     }
  88.     else 
  89.     {
  90.       AimRotation = Instigator.ViewRotation;
  91.       SetRotation(AimRotation);
  92.     
  93.       Drawoffset = Instigator.Weapon.CalcDrawOffset();
  94.     }
  95.     GetAxes(Instigator.ViewRotation,X,Y,Z);
  96.  
  97.     FireOffset = Instigator.Weapon.Default.FireOffset;
  98.     if (bCenter)
  99.     {
  100.       FireOffset.Z = Instigator.Weapon.Default.FireOffset.Z * 1.5;
  101.       FireOffset.Y = 0;
  102.     }
  103.     else 
  104.     {
  105.       FireOffset.Z = Instigator.Weapon.Default.FireOffset.Z;
  106.       if (bRight)
  107.              FireOffset.Y = Instigator.Weapon.Default.FireOffset.Y;
  108.       else
  109.            FireOffset.Y = -1 * Default.FireOffset.Y;
  110.     }
  111.     SetLocation(Instigator.Location + DrawOffset + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z);
  112.   }
  113.   else
  114.      GetAxes(Rotation,X,Y,Z);
  115.  
  116.   CheckHit(X);
  117. }
  118.  
  119. ó8<                  *tÿÅÜó┼╘▒â╜É«lâ╜É«lÜ_ ºRæ$W å1J#]Grapple.ocmGrappleLauncher$]none0« B&w*a*« 5@⌐Lyv w*a* ñA0    Æï    (-▒(v!           ╦ë"     ╠/14ÄZ     q!' Ç╒. £
  120. V-▐q! .äæMr.Ææ*Fq!     Tq!     ▓+:╬ê{╡?,'┤?%Ç?4╢?    p┤?    ½.ª╪Botpack.TranslocR ª{½ »▓ Ç@s+//=============================================================================
  121. // ocmGrappleLauncher.
  122. //=============================================================================
  123. class ocmGrappleLauncher expands TournamentWeapon;
  124.  
  125. var Weapon  PreviousWeapon;
  126. var Grapple Grapple;
  127.  
  128. function Destroyed()
  129.   if (Grapple != none)
  130.   {
  131.     Grapple.Destroy();
  132.     Grapple = none;
  133.   }
  134.   Super.Destroyed();
  135.  
  136. function setHand(float Hand)
  137. {
  138.   if (Hand != 2)
  139.   {
  140.     if (Hand == 0)
  141.         Hand = 1;
  142.     else
  143.         Hand *= -1;
  144.  
  145.     if (Hand == -1)
  146.         Mesh = mesh(DynamicLoadObject("Botpack.TranslocR", class'Mesh'));
  147.     else
  148.         Mesh = mesh'Botpack.Transloc';
  149.   }
  150.   Super.SetHand(Hand);
  151. }
  152.  
  153. function DropFrom(vector StartLocation)
  154. {
  155.   if (Grapple != none)
  156.   {
  157.     Grapple.Destroy();
  158.     Grapple = none;
  159.   }
  160.   Super.DropFrom(StartLocation);
  161. }
  162. function BringUp()
  163. {
  164.   PreviousWeapon = none;
  165.   Super.BringUp();
  166. }
  167.  
  168. function RaiseUp(Weapon OldWeapon)
  169. {
  170.   if (OldWeapon == Self)
  171.       PreviousWeapon = none;
  172.   else
  173.       PreviousWeapon = OldWeapon;
  174.   Super.BringUp();
  175. }
  176.  
  177. simulated function PlayFiring()
  178. {
  179.   PlayOwnedSound(FireSound,SLOT_Misc,4 * Pawn(Owner).SoundDampening);    
  180.   PlayAnim('Throw',1.0,0.1);
  181. }
  182.  
  183. function Fire(float Value)
  184. {
  185.   GotoState('NormalFire');
  186.   if (PlayerPawn(Owner) != none)
  187.       PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert);
  188.   bPointing = True;
  189.   PlayFiring();
  190.   if ((!bRapidFire) && (FiringSpeed > 0))
  191.       Pawn(Owner).PlayRecoil(FiringSpeed);
  192.   if (Grapple == none)
  193.         Grapple = GrappleBase(ProjectileFire(ProjectileClass,ProjectileSpeed,bWarnTarget));
  194.   if (Owner.bHidden)
  195.       CheckVisibility();
  196. }
  197.  
  198. function AltFire(float Value)
  199. {
  200.   GotoState('AltFiring');
  201. }
  202.  
  203. ///////////////////////////////////////////////////////////
  204.  
  205. ///////////////////////////////////////////////////////
  206. state NormalFire
  207. {
  208.     function Fire(float F) 
  209.     {
  210.     }
  211.     
  212.     function AltFire(float F) 
  213.     {
  214.     }
  215.     
  216.     function EndState()
  217.     {
  218.  
  219.     }
  220.     
  221. Begin:
  222.     FinishAnim();
  223.     Finish();
  224. }
  225.  
  226. state AltFiring
  227. {
  228.     function Fire(float F) 
  229.     {
  230.     }
  231.     
  232.     function AltFire(float F) 
  233.     {
  234.     }
  235.     
  236.     function EndState()
  237.     {
  238.       if (Grapple != none)
  239.       {
  240.         Grapple.Destroy();
  241.         Grapple = none;
  242.       }
  243.     }
  244.     
  245. Begin:
  246.     FinishAnim();
  247.     Finish();
  248. }
  249.  
  250. state Idle
  251. {
  252.     function AnimEnd()
  253.     {
  254.       PlayIdleAnim();
  255.     }
  256.  
  257.     function bool PutDown()
  258.     {
  259.       GotoState('DownWeapon');
  260.       return True;
  261.     }
  262.  
  263. Begin:
  264.     bPointing = False;
  265.     Disable('AnimEnd');
  266.     PlayIdleAnim();
  267. }
  268.  
  269. function Finish()
  270. {
  271.   local Pawn PawnOwner;
  272.  
  273.   if (bChangeWeapon)
  274.   {
  275.     GotoState('DownWeapon');
  276.     return;
  277.   }
  278.  
  279.   PawnOwner = Pawn(Owner);
  280.   if (PlayerPawn(Owner) == none)
  281.   {
  282.     PawnOwner.StopFiring();
  283.     GotoState('Idle');
  284.     return;
  285.   }
  286.   else 
  287.      GotoState('Idle');
  288. }
  289.  
  290. Çb
  291. //=============================================================================
  292. // GrappleArena.
  293. //=============================================================================
  294. class GrappleArena expands Arena;
  295.  
  296. var() name          WeaponName,
  297.                     AmmoName;
  298. var() string        WeaponString,
  299.                     AmmoString;
  300.                     
  301.  
  302. function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
  303. {
  304.   if (Other.IsA('Weapon'))
  305.   {
  306.     if (Other.IsA('Translocator')) 
  307.     {
  308.       Level.Game.bCoopWeaponMode = False;
  309.       ReplaceWith(Other,"Grapple.ocmGrappleLauncher");
  310.       return False;
  311.     }
  312.   }
  313.   
  314.   bSuperRelevant = 0;
  315.   return True;
  316. }
  317.  
  318. ░Σ░w*a : »sa
  319. ╫Å╒Å'+ääééw*
  320. wç-╝
  321. r¢Yéé-▄-╗1är.ä*.ä>
  322. ╥tr¢9▓ß╪ç ÅÅ?,P.çÄa.çÄ*ç2H╓╘Γ╪Åç Åç╞?,éw.ä*w.äç$*,2ç
  323. ?Φ!).çÄa.çÄ*&w*a* q\r*a  ╫Å╒q
  324.  ┘>/┤wka/!'ka/!A¢═-╜(=Grapple.ocmGrappleLauncher($' P&//=============================================================================
  325. // Grapple.
  326. //=============================================================================
  327. class Grapple expands Projectile;
  328.  
  329. var() float   CableSize;
  330. var   Grapple NewCable;
  331. var   vector  FireOffset;
  332. var   bool    bRight,
  333.               bCenter,
  334.               bHitWall;
  335.  
  336. replication
  337. {
  338.   unreliable if (Role == ROLE_Authority)
  339.      bRight, bCenter;
  340. }
  341.  
  342. simulated function Destroyed()
  343. {
  344.   Super.Destroyed();
  345.   if (NewCable != none)
  346.       NewCable.Destroy();
  347. }
  348.  
  349. simulated function CheckHit(vector TestVect)
  350. {
  351.   local actor  HitActor;
  352.   local vector HitLocation,
  353.                  HitNormal;
  354.  
  355.   HitActor = Trace(HitLocation,HitNormal,Location + CableSize * TestVect,Location,True);
  356.   if ((HitActor != none) && (HitActor != Instigator)    && (HitActor.bProjTarget) || (HitActor == Level) || (HitActor.bBlockActors) && (HitActor.bBlockPlayers) 
  357.   && ((Pawn(HitActor) == none) || Pawn(HitActor).AdjustHitLocation(HitLocation,Velocity)))
  358.   {
  359.     if (HitActor == Level)
  360.     {
  361.       if (vSize(Instigator.Location - Location) <= 80)
  362.       {
  363.         ocmGrappleLauncher(Instigator.Weapon).Grapple.Destroy();
  364.         ocmGrappleLauncher(Instigator.Weapon).Grapple = none;
  365.       }
  366.       Instigator.AddVelocity((normal(Location - Instigator.Location) * Instigator.AirSpeed) / 2);
  367.     }
  368.     if ((Pawn(HitActor) != none) && (Pawn(HitActor) != Instigator))
  369.     {
  370.       HitActor.TakeDamage(50,Instigator,HitLocation,HitLocation * 1000,'Spiked'); 
  371.       ocmGrappleLauncher(Instigator.Weapon).Grapple.Destroy();
  372.       ocmGrappleLauncher(Instigator.Weapon).Grapple = none;
  373.     }
  374.     if (NewCable != none)
  375.     {
  376.       NewCable.Destroy();
  377.       NewCable = none;
  378.     }
  379.       return;
  380.   }
  381.   else
  382.   {
  383.     if (NewCable == none)
  384.         NewCable = Spawn(Class'Grapple',,,Location + CableSize * TestVect);
  385.     else
  386.        NewCable.UpDateCable(Self,TestVect);
  387.   }
  388. }
  389.  
  390. simulated function UpdateCable(Grapple ParentCable, vector Dir)
  391. {
  392.   local actor  HitActor;
  393.   local vector HitLocation,
  394.                HitNormal;
  395.  
  396.   SetLocation(ParentCable.Location + CableSize * Dir);
  397.   SetRotation(ParentCable.Rotation);
  398.   CheckHit(Dir);
  399. }
  400.  
  401. simulated function Touch(actor Other)
  402. {
  403.   if (Inventory(Other) != none)
  404.   {
  405.     Inventory(Other).GiveTo(Instigator);
  406.     ocmGrappleLauncher(Instigator.Weapon).Grapple.Destroy();
  407.     ocmGrappleLauncher(Instigator.Weapon).Grapple = none;
  408.   }
  409. }
  410.  
  411. BÑH                   ?N_Ñ≥Ö╨╣å;
  412. I=a ╫ Å╒a+ ú £'-Ç╬a             ,DâEêê╕@P╛ljw.ò*.ò Bç.çÄa.çÄ* ÇT//=============================================================================
  413. // GrappleM.
  414. //=============================================================================
  415. class GrappleM expands Mutator;
  416.  
  417. ║    J¼hEwç*╗éÜ:¢╡:$/äüça/!r.Æç┤*a+    ç í    a╒
  418. ╫#<  ┼ú▀╒ç╚#Ç?⌡    ç ía+    çÄ ╖σç í
  419. çÄ Ö{-6ù½6ùçÄ Ö└?6ô±6ù6ùçÄ Ö╒-6ô6ôçÄ Ö±6ô½Ç┐6ôa ╫╫╫╫ç Å╒6╙ ╒6ô ╒6ù
  420. [σú
  421.    ÇÇΓNG
  422. uS ⌐%f╔ ßKq+ PêQêâYY]    Q]    Z]    ']■   RY²   Fu·   ]■   PY ]■   x]÷   N]■   YYⁿ   'x²   v]■   [Y²   h]    [°   m]■   ]]    O]■   a[°   j]■   Vx√   &]    wY²   ^\⌠   P√   9]■   \\⌠   ]    Gxⁿ   s]÷   Rx²   r\√       ]    U]    !]    Z]■   MP·   ]■   AY²   !T÷   TP⌠   EP√   T÷   SP²   a√   }P√   :[√   @Yε   acµ   k[ⁿ   |Pδ   CPα   H√   %P²   a²   6a²   Qa┘   l[√   W[√   P[√   ]a√   [√   [P²   ea²   Xxδ   C[ⁿ   BY√   D[ⁿ   EP√   c²   LP▄   P▄   4Yµ   fP√   5YKY▒   I░   Lx²   e[°   dY÷   IP⌠    P⌠   P⌠   
  423. P·   SP▐   /u·   N]■   ca²   7a√   ga√   ~Pß   Pß   
  424. PΣ   PΣ   
  425. ¼   UT÷   WáVv'ì
  426. L.îoY.ì;i
  427. H2ï&
  428. U2ì_
  429. b2É3_ o2ïIy{2ïXI3ï;`
  430. W3ïId
  431. d3ïIm
  432. q3ïIj
  433. ~3ï;b
  434. K4ì<c
  435. X48Pe4É u8ìV
  436. A9ï@\N9ìFc
  437. \9ì2z
  438. i9ì@d
  439. v9ìq
  440. C:ûpP:ï {
  441. ^:█<n
  442. k:ûJx:ï;^
  443. F;ë╓QS;Éo d=ë╬53p=ë¡E6c>ë╔FY?É&o _@ë▀'k@É#M GAëα'
  444. SAë╫
  445.  oA₧ƒ<OBë¥9"KCÿt4QmCól~[ë«3j^¬*# ]_ë⌐A1i_₧ñ    BZ`ë╦.\aë╠.4"{aû0O ]bë╒ Qibë▓:{zcû<O ue¬*$ Afÿt4~+MfÉ%M KÆÿ*t4m
  446. WÆû` D¥ë░/P¥ël¥ë┘*/ukñÿt4[&`ª¿*1
  447. {╠Ñ VH═ë
  448. >^╬₧£;\╧¿*J W╨ì@ic╨ï@`q╨ï@^
  449. ╨ë╕]L╤ÉLM i╥ÿ?t4_u╥ë║UT╓ÉIb i▄ÉNM u▄ëΓA
  450. A▌ë⌐'_▌ëßAz▌ïI^W▐ïI`e▐ìIi
  451. s▐[Public]
  452. Object=(Name=Grapple.GrappleArena,Class=Class,MetaClass=Engine.Mutator,Description="Grapple Mutation, Replace translocators with GrappleLaunchers.")
  453. These classes are based off face skins, each of these group of face skins is a class, each class has its own speed and weapons. Depending on what player you have choosen in the UWindow->options->Player Setup menu.
  454.  
  455. - Light Class:
  456. ----------------
  457. Faces: RawS4Kregore, RawS4Slain, RawS4 and blkt4Riker
  458. Weapons: Enforcer, and Shock Rifle
  459. 1.7x times the speed of a normal player
  460. Armor: Thigh pads
  461. - Medium Class:
  462. ---------------
  463. Faces: RawS4ManWell, RawS4Bruce, blkt4Othello and blkt4
  464. Weapons: Enforcer, and Pulse Gun
  465. 1.3x the speed of a normal player
  466. Armor: Chest plate
  467. - Heavy Class:
  468. ----------------
  469. Faces: RawS4Arkon and blkt4Malcom
  470. Weapons: Enforcer, and minigun
  471. Slightly lower than normal
  472. Armor: Chest plate & thigh pads
  473.  
  474. Note: There are several reasons why I used this reverse engineered method, first, I only intend this to be for the UT demo, secondly I didn't want to force a player to have to d/l this mod as of now it only needs to be on the server, unless you want to use it in a practice game.-----------------------------------------------------------------------            Grapple Mutation
  475. -----------------------------------------------------------------------
  476. This is a simple mod I put a few hours into setting up to appease the poor people who wanted a grapple in ut, but couldn't get it.
  477. I may up date the grapple code(as it is now it has some issue I just didn't feel like working out) but all in all it gets the job done. Since I consider mutators to be a same affair I didn't want to put too much time into it. Though if I see enough servers using it I will. After not seeing alot of servers use TeamCTF(btw, this two mods would kick ass together for the demo), I didn't want to put much effort into anything.
  478. Ok, now here is how it works.
  479. ----------------------------------------------------------------------
  480. Primary fire: Shoots out a cable that when connects with a wall draws you to it, it auto releases once you arrive near it. You can also use this to collect items and weapons from affar, and it does alot of damage to oppenents.
  481. Secodary Fire: Kills the cable.System\Manifest.iniSystem\Manifest.intßSystem\Grapple.u⌠⌡?System\Grapple.intΘBáSystem\TeamCTF.txtëCSystem\Grapple.txtèG=ú┼πƒ╟K£LV╩≡